package io.github.droidkaigi.confsched.util;
import android.content.Context;
import android.os.Build;
import android.support.annotation.NonNull;
import android.text.format.DateFormat;
import android.text.format.DateUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.concurrent.TimeUnit;
public class DateUtil {
private static final String FORMAT_MMDD = "MMMd";
private static final String FORMAT_KKMM = "kk:mm";
private static final String FORMAT_YYYYMMDDKKMM = "yyyyMMMdkkmm";
@NonNull
public static String getMonthDate(Date date, Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), FORMAT_MMDD);
return new SimpleDateFormat(pattern).format(date);
} else {
int flag = DateUtils.FORMAT_ABBREV_ALL | DateUtils.FORMAT_NO_YEAR;
return DateUtils.formatDateTime(context, date.getTime(), flag);
}
}
@NonNull
public static String getHourMinute(Date date) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), FORMAT_KKMM);
return new SimpleDateFormat(pattern).format(date);
} else {
return String.valueOf(DateFormat.format(FORMAT_KKMM, date));
}
}
@NonNull
public static String getLongFormatDate(Date date, Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), FORMAT_YYYYMMDDKKMM);
return new SimpleDateFormat(pattern).format(date);
} else {
java.text.DateFormat dayOfWeekFormat = java.text.DateFormat.getDateInstance(java.text.DateFormat.LONG);
java.text.DateFormat shortTimeFormat = java.text.DateFormat.getTimeInstance(java.text.DateFormat.SHORT);
dayOfWeekFormat.setTimeZone(LocaleUtil.getDisplayTimeZone(context));
shortTimeFormat.setTimeZone(LocaleUtil.getDisplayTimeZone(context));
return dayOfWeekFormat.format(date) + " " + shortTimeFormat.format(date);
}
}
public static int getMinutes(Date stime, Date etime) {
long range = etime.getTime() - stime.getTime();
if (range > 0) {
return (int) (range / TimeUnit.MINUTES.toMillis(1L));
} else {
return 0;
}
}
}